//对axios进行二次封装
import axios from "axios";
import {message} from "ant-design-vue";


//1、利用axios对象的方法create,去创建一个axios实例
const requests = axios.create({
  //配置对象
  //基础路径，requests发出的请求在端口号后面会跟改baseURl
  baseURL: process.env.VUE_APP_BASE_API,
  //代表请求超时的时间5s
  timeout: 5000,
})

//请求拦截器，在请求发出之前做些事情
requests.interceptors.request.use((config) => {
  //config:配置对象，对象里面有个属性很重要，header请求头
  return config
})
//响应拦截器,对响应的数据做一些操作
requests.interceptors.response.use((res) => {
  //成功回调函数，服务器响应数据回来以后，响应拦截器可以检测到，可以做一些事情
  return res.data
}, (error) => {
  if (error.code === 'ECONNABORTED' && error.message.indexOf('timeout') !== -1) {
    message.error('请求超时，请稍后进行操作！');
    return Promise.reject(error);
  }

  switch (error.response.status) {
    case 400:
      message.error(error.response.data)
      break
    case 401:
      message.error(error.response.data)
      break
    case 405:
      message.error('http请求方式有误!')
      break
    case 500:
      message.error('服务器出了点小差，请稍后再试!')
      break
    case 501:
      message.error('服务器不支持当前请求所需要的某个功能')
      break
  }
  return Promise.reject(error)
})
//对外暴露
export default requests;
